using System.ComponentModel.DataAnnotations;
using SupplierCustomerManagement.Domain.Entities;

namespace SupplierCustomerManagement.Domain.ReportForms
{
    /// <summary>
    /// 产羔记录实体
    /// 用于记录母羊的产羔情况
    /// </summary>
    public class LambingRecord : BaseEntity
    {
        /// <summary>
        /// 母羊ID
        /// </summary>
        [Required]
        public int EweId { get; set; }

        /// <summary>
        /// 产羔日期
        /// </summary>
        [Required]
        public DateTime LambingDate { get; set; }

        /// <summary>
        /// 产羔时间
        /// </summary>
        public TimeSpan? LambingTime { get; set; }

        /// <summary>
        /// 总产羔数
        /// </summary>
        [Required]
        public int TotalLambs { get; set; }

        /// <summary>
        /// 活羔数
        /// </summary>
        [Required]
        public int LiveLambs { get; set; }

        /// <summary>
        /// 死羔数
        /// </summary>
        public int DeadLambs { get; set; } = 0;

        /// <summary>
        /// 健羔数
        /// </summary>
        public int? HealthyLambs { get; set; }

        /// <summary>
        /// 弱羔数
        /// </summary>
        public int? WeakLambs { get; set; }

        /// <summary>
        /// 畸形羔数
        /// </summary>
        public int? DeformedLambs { get; set; }

        /// <summary>
        /// 木乃伊胎数
        /// </summary>
        public int? MummifiedFetuses { get; set; }

        /// <summary>
        /// 畸胎数
        /// </summary>
        public int? AbnormalFetuses { get; set; }

        /// <summary>
        /// 产羔类型（单胎/双胎/多胎）
        /// </summary>
        [StringLength(20)]
        public string? LambingType { get; set; }

        /// <summary>
        /// 产羔状态（正常/难产/流产）
        /// </summary>
        [StringLength(20)]
        public string? LambingStatus { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Notes { get; set; }

        /// <summary>
        /// 羊场ID
        /// </summary>
        [Required]
        public int FarmId { get; set; }
    }
}
